home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_12_07 / plauger / isgstrng.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-05-03  |  640 b   |  31 lines

  1. // isgstring -- istream::get(char *, int, char)
  2. #include <istream>
  3.  
  4. istream& istream::get(char *s, int n, char delim)
  5.     {    // get up to delimiter or count
  6.     _Chcount = 0;
  7.     _TRY_IO_BEGIN
  8.     if (ipfx(1) && 0 < n)
  9.         {    // extract arbitrary characters
  10.         int ch;
  11.         for (; 0 < --n; *s++ = ch, ++_Chcount)
  12.             if ((ch = rdbuf()->sbumpc()) == EOF)
  13.                 {    // record eof and quit
  14.                 setstate(eofbit);
  15.                 break;
  16.                 }
  17.             else if (ch == delim)
  18.                 {    // put back delimiter and quit
  19.                 rdbuf()->sputbackc(ch);
  20.                 break;
  21.                 }
  22.         }
  23.     if (_Chcount == 0)
  24.         setstate(failbit);
  25.     *s = '\0';
  26.     isfx();
  27.     _CATCH_IO_END
  28.     return (*this);
  29.     }
  30.  
  31.